package com.sky.context;

/**
 * BaseContext 类用于管理线程上下文中的当前用户 ID。
 * 使用 ThreadLocal 保证每个线程拥有独立的变量副本，避免线程安全问题。
 */
public class BaseContext {

    /**
     * 线程本地变量，用于存储当前线程的用户 ID。
     * 每个线程对该变量的操作都是相互隔离的。
     */
    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的用户 ID。
     *
     * @param id 用户 ID
     */
    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }

    /**
     * 获取当前线程的用户 ID。
     *
     * @return 当前线程的用户 ID
     */
    public static Long getCurrentId() {
        return threadLocal.get();
    }

    /**
     * 移除当前线程的用户 ID。
     * 通常在操作结束时调用，防止内存泄漏。
     */
    public static void removeCurrentId() {
        threadLocal.remove();
    }

}
